import axios from 'axios'

const host = "https://apis.netstart.cn/one/"

// 获取日期字符串，参数：daysAgo - 多少天前（默认0为今天）
export const getDateString = (daysAgo = 0) => {
  const date = new Date()
  const currentHour = date.getHours()

  // 如果当前时间未过早上8点，则daysAgo需要+1
  let actualDaysAgo = currentHour < 8 ? daysAgo + 1 : daysAgo

  date.setDate(date.getDate() - actualDaysAgo)

  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')

  return `${year}-${month}-${day}`
}

// 基础请求方法，参数：url - 请求地址，params - 请求参数
const request = {
  get: (url, params = {}) => {
    return axios.get(`${host}${url}`, { params }).then(res => res.data)
  }
}

// 获取指定日期的每日内容列表，参数：date - 日期字符串（YYYY-MM-DD）
export const getDailyContent = (date) => {
  return request.get(`channel/one/${date}`)
}

// 根据文章ID获取阅读文章详情，参数：id - 文章ID
export const getReadingDetail = (id) => {
  return request.get(`essay/htmlcontent/${id}`)
}

// 获取阅读文章的评论列表，参数：id - 文章ID
export const getReadingComments = (id) => {
  return request.get(`comment/praiseandtime/essay/${id}/0`)
}

// 获取按月分类的阅读文章列表，参数：month - 月份（YYYY-MM）
export const getReadingListByMonth = (month) => {
  return request.get(`find/bymonth/1/${month}`)
}

// 根据电台ID获取电台详情，参数：radioId - 电台ID
export const getRadioDetail = (radioId) => {
  return request.get(`radio/htmlcontent/${radioId}`)
}

// 获取电台的评论列表，参数：radioId - 电台ID
export const getRadioComments = (radioId) => {
  return request.get(`comment/praiseandtime/radio/${radioId}/0`)
}

// 获取按月分类的电台列表，参数：month - 月份（YYYY-MM）
export const getRadioListByMonth = (month) => {
  return request.get(`find/bymonth/8/${month}`)
}

// 根据问答ID获取问答详情，参数：id - 问答ID
export const getQADetail = (id) => {
  return request.get(`question/htmlcontent/${id}`)
}

// 获取问答的评论列表，参数：id - 问答ID
export const getQAComments = (id) => {
  return request.get(`comment/praiseandtime/question/${id}/0`)
}

// 获取按月分类的问答列表，参数：month - 月份（YYYY-MM）
export const getQAListByMonth = (month) => {
  return request.get(`find/bymonth/3/${month}`)
}

// 获取小记广场列表，参数：diaryId - 上一次请求最后一个元素的id（首次请求传0）
export const getNoteSquare = (diaryId = 0) => {
  return request.get(`diary/square/more/${diaryId}`)
}

// 获取指定月份的每日一图列表，参数：month - 月份（YYYY-MM）
export const getDailySignListByMonth = (month) => {
  return request.get(`feeds/list/${month}`)
}

// 根据日期获取每日一图详情，参数：date - 日期（YYYY-MM-DD）
export const getDailySignByDate = (date) => {
  return request.get(`hp/bydate/${date}`)
}

// 搜索日签，参数：query - 搜索关键词，page - 页码（从0开始）
export const searchDailySign = (query, page) => {
  return request.get(`search/hp/${query}/${page}`)
}

// 搜索作者，参数：query - 搜索关键词，page - 页码（从0开始）
export const searchAuthor = (query, page) => {
  return request.get(`search/author/${query}/${page}`)
}

// 搜索电影/书籍，参数：query - 搜索关键词，page - 页码（从0开始）
export const searchBookMovie = (query, page) => {
  return request.get(`search/movie/${query}/${page}`)
}

// 搜索音乐，参数：query - 搜索关键词，page - 页码（从0开始）
export const searchMusic = (query, page) => {
  return request.get(`search/music/${query}/${page}`)
}

// 搜索电台，参数：query - 搜索关键词，page - 页码（从0开始）
export const searchRadio = (query, page) => {
  return request.get(`search/radio/${query}/${page}`)
}

// 搜索阅读，参数：query - 搜索关键词，page - 页码（从0开始）
export const searchReading = (query, page) => {
  return request.get(`search/essay/${query}/${page}`)
}

// 全站搜索（按分类），参数：category - 分类名称，query - 搜索关键词
export const searchByCategory = (category, query) => {
  return request.get(`search/${category}/${query}/0`)
}

// 获取话题轮播图列表
export const getTopicBanner = () => {
  return request.get('banner/list/4')
}

// 获取热门榜单
export const getHotRank = () => {
  return request.get('find/rank')
}

// 获取热门榜单详情列表
export const getHotRankList = (id) => {
  return request.get(`find/rank/${id}`)
}
// 获取热门作者列表
export const getHotAuthors = () => {
  return request.get('author/hot')
}

// 获取指定年份的长文章列表，参数：year - 年份（YYYY）
export const getLongArticleByYear = (year) => {
  return request.get(`find/serial/byyear/${year}`)
}

// 通用GET请求方法（兼容旧代码），参数：url - 请求地址，params - 请求参数
export const get = (url, params = {}) => {
  return request.get(url, params)
}

export default { get, getDateString }
